package com.appredes.model;


import java.math.*;
/**
 * Clase que realiza el sub-neting de la ip ingresada en el aplicativo.
 * @author David Cuellar
 * @version 1.0
 * @created 22-oct-2011 06:39:36 p.m.
 */
public class SubNeting {

	/**
	 * Guarda el numero de redes en que se dividirad la IP ingresada
	 */
	private short numberOfNets;
	/**
	 * Guarda la cantidad de hosts que se requieran en el subneteo.
	 */
	private int numberOfHosts;
	/**
	 * Guarda el valor de la mascara de red.
	 */
	private short valueOfMask;
        /**
         * Guarda el numero de bits a robar del siguiente octeto.
         */
        private short bitsToSteel;
        /**
         * Guarda el numero total de subredes que estaran disponibles.
         */
        private int subRedesTotales;
        
	public Ranges m_Ranges;

	public SubNeting(){

	}

	public void finalize() throws Throwable {

	}
	/**
	 * Retorna la mascara de red por defecto de la Clase de IP.
	 */
	public void getDafaultMask(){

	}

        public short getBitsToSteel() {
            return bitsToSteel;
        }

        public short getValueOfMask() {
            return valueOfMask;
        }
        
        
        

	/**
	 * Calcula la cantidad de Bits a robar del siguiente octeto de la mascara de red
	 * por defecto.
	 * 
	 * @param numberOfNets
	 */
	public void calculateBitToSteel(short numberOfNets){
            
            double red = 0;
            double i = 0;
            
            do{
                i++;
                red = Math.pow(2.0, i);
            }
            while(numberOfNets > red);
            
            bitsToSteel = (short) i;
            subRedesTotales = (int) red;

	}
        
        /**
         * Calcula la mascara predeterminada segun la clase de direccion IP
         * 
         * @param Tipo 
         */
	public short getRangeOfSubnets(){
            
            int posIni = 128;
            int posFin = 0;
            
            for(int i=0;i<bitsToSteel;i++){
                
                posFin = posFin + posIni;
                posIni /= 2;
                
            }
            
            return valueOfMask = (short)posFin; /* Valor de la mascara adaptada */

	}

	public void getHostxNet(){
            
           

	}
}//end SubNeting
